The present invention relates to mechanisms for predicting resource requirements for a computer application.
In the context of enterprise software applications the accounting and controlling of computing resources is extremely important, for both costs and power consumption control and service level agreement assurance.
One established solution exists in the context of virtualized computing environments, usually the backbone of computing clusters and Cloud environment, where a hypervisor mediates between hardware resources and operating systems resources made available to applications.
Recent middleware such as IBM WebSphere XD, beyond the concept of computing clusters, includes capabilities to respond to changes in load of input requests by migrating on demand hosted applications on processing nodes according to centralized management policies of different server farms, resulting in optimization of the overall computing power used.
Computing resources usage policies can be defined “manually” by the system administrator according to known application specific needs based on the experience of previous runs: an example of policy is to assign a certain node to a certain application during a fixed number of hours based on calendar time.
An experimental alternative approach includes Autonomic principles applied to both Operating Systems or Application Servers which by means of automation rules is able to decide when it is convenient to allocate new resources to running applications, for example just in time to migrate to new nodes or apply compensation actions.
The architecture of both hypervisors and Autonomic environments includes a resource allocation module that mediates the interaction of software application code and system resources.
If an operating environment has available (for example from a resource allocation module as described above) predictions of the future state (absolute amount requirement or relative percentage with respect to some actual value) of its computing resources it might operate control actions for crash prevention, application migration to other nodes or at least administrators notification or any other meaningful action, for example actions performed by an autonomic feedback engine.
There are two main prior art approaches to the described problem of predicting resources requirements: “monitoring” and “modeling and simulation”.
Monitoring of Resource Consumption
The first is a “traditional monitoring” of resources and applications, for example as implemented in the IBM Tivoli Monitoring software product, aiming at measuring and analyzing in real-time consumption trends of individual resources (or correlated), comparing thresholds or more complex from historical data of known operating situations. There are known successes in literature and industry but often serious problems, such as resource exhaustion, which are detected too late for the Operating System or administrators to take recovery actions, or are not detected at all because the signals from historical monitoring data don't show patterns or the identified patterns don't exhibits prediction trends.                1. Advantages: standard and stable implementation and deployment.        2. Drawbacks: raw prediction capabilities.        
Modeling (Parametric and Non-Parametric) of Resource Consumption
The second approach is system and applications modeling and simulation, in which case a mathematical model of the system, resources and of the running application is selected so that a simulation or analysis can predict the application behavior with respect to some modeled aspects. There exist many frameworks to derive parametric (or non parametric) models of software (both applications and systems) to evaluate and predict performance or computation complexity, noticeable examples are the QN (Queuing Networks) and QPN (Queuing Petri Networks), Markov Models and others (including combinations of different techniques).                1. Advantages: accuracy of simulations.        2. Drawbacks: resulting model usually strongly related to a particular application and to a particular aspect of interest like its performance or serviceability. This modeling approach makes it possible to increase or to decrease the complexity of the model to obtain better or worse predictions but it usually requires a deep human intervention in the definition of each different application model and its not aimed for runtime control and monitoring of applications but in the upfront study and optimization in the design phase, additionally its mathematical model might requires more computing resources that the application itself. Another modeling approach is the non parametric approach whereby based on a resource consumption analysis and prediction based of the evaluation of time series. Time series are known to be very difficult to correlate for prediction purposes without any information about the semantic of what is being performed on the system. Another problem is that the analysis of the mass of recordings of monitoring data required for every resource in every usage condition introduce itself a challenge.        